package cn.myjerry.test.annotation;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;

/**
 * 利用反射读取注解的信息，模拟处理注解信息的流程
 * @author Jerry
 *
 */
public class Demo03 {
	public static void main(String[] args) throws NoSuchFieldException, SecurityException {
		try {
			Class<?> clzz = Class.forName("cn.myjerry.test.annotation.SxtStudent");
			
			// 获得类的所有有效注解
			Annotation[] annotations = clzz.getAnnotations();
			System.out.println(annotations.length);
			for(Annotation a : annotations) {
				System.out.println(a);
			}
			
			// 获得类的指定的注解
			SxtTable st = clzz.getAnnotation(SxtTable.class);
			System.out.println(st.value());
			
			// 获得类的属性的注解
			Field f = clzz.getDeclaredField("Name");
			SxtField sxtfield = f.getAnnotation(SxtField.class);
			System.out.println(sxtfield.columnName() + "-->" + sxtfield.Type() + "-->" + sxtfield.length());
			
			// 根据获得的表名、字段的信息，拼出DDL语句，然后使用JDBC执行这个SQL，在数据库中生成相关的表
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
}
